package com.yc.cloud.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yc.cloud.common.orm.CommonPage;
import com.yc.cloud.admin.dto.request.HwDeviceVideoRecordCreateReqDTO;
import com.yc.cloud.admin.dto.request.HwDeviceVideoRecordUpdateReqDTO;
import com.yc.cloud.admin.dto.request.HwDeviceVideoRecordPageReqDto;
import com.yc.cloud.admin.vo.HwDeviceVideoRecordVo;
import com.yc.cloud.entity.HwDeviceVideoRecord;

/**
 * <p>
 * 设备录像记录表 服务类
 * </p>
 *
 * @author kinggu
 * @since 2025-01-03
 */
public interface HwDeviceVideoRecordService extends IService<HwDeviceVideoRecord> {



    /**
     * 移动视频文件到项目目录并创建OSSFile记录
     * @param originalFilePath 原始文件路径
     * @return 文件ID
     */
    String moveVideoFileAndCreateOssRecord(String originalFilePath);

    /**
     * 移动视频文件到指定目录并创建OSSFile记录
     * @param originalFilePath 原始文件路径
     * @param targetPath 目标路径
     * @return 文件ID
     */
    String moveVideoFileAndCreateOssRecord(String originalFilePath, String targetPath);

    /**
     * 创建录像记录
     * @param createReqDTO 创建参数
     * @return 是否成功
     */
    Boolean create(HwDeviceVideoRecordCreateReqDTO createReqDTO);

    /**
     * 更新录像记录
     * @param updateReqDTO 更新参数
     * @return 是否成功
     */
    Boolean update(HwDeviceVideoRecordUpdateReqDTO updateReqDTO);

    /**
     * 根据ID获取录像记录详情
     * @param id 记录ID
     * @return 录像记录详情
     */
    HwDeviceVideoRecordVo getVOById(Long id);

    /**
     * 分页查询录像记录
     * @param pageReqDTO 分页查询参数
     * @return 分页结果
     */
    CommonPage<HwDeviceVideoRecordVo> list(HwDeviceVideoRecordPageReqDto pageReqDTO);

    /**
     * 删除录像记录（同时删除关联的OSS文件资源）
     * @param id 记录ID
     * @return 是否成功
     */
    Boolean delete(Long id);
}
